/**
 * 用户管理
 */
Ext.namespace('Divo');
Ext.namespace('Divo.app');

Divo.app.UserList = function() {
  /* ----------------------- private属性 ----------------------- */
  var gridEl = 'user-grid', treeEl = 'app-user-role-tree'
  var canEdit = false, status = "list"; // 当前列表状态("list","insert","edit")
  var tree, root, isUserAction;
  var cUserId;
  var userGrid, form, selModel, toolbar;
  var logGrid;

  /* ----------------------- private方法 ----------------------- */

  // 创建列表
  function createGrid() {
    var queryFlds = new Array();
    var searchFlds = new Ext.util.MixedCollection();
    queryFlds.push('loginName');
    var fldName = new Ext.form.TextField({
          name : 'loginName',
          id : gridEl + '-loginName',
          fieldLabel : '用户名',
          allowBlank : true,
          width : 100
        });
    searchFlds.add('loginName', fldName);
    userGrid = new Divo.Base.GridView({
          autoSelectFirstRow : false,
          gridId : gridEl,
          packageName : 'set',
          entityName : 'User',
          queryFlds : queryFlds,
          searchFlds : searchFlds,

          autoFit : false,
          queryUrl : 'system/get_sys_users',
          //deleteUrl : 'system/delete_sys_user',
          jsonId : 'id',
          recordPk : ["id"]
        });
    selModel = userGrid.getSelectionModel();
    selModel.on('rowselect', onRowSelect);
    var cm = userGrid.getColumnModel();
    var colStatus = cm.findColumnIndex('status');
    cm.setRenderer(colStatus, function(value, p, record) {
          return value == 'enabled' ? '启用' : '停用';
        });

    var ds = new Ext.data.Store({
          proxy : new Ext.data.HttpProxy({
                url : "system/query_user_log"
              }),
          reader : new Ext.data.JsonReader({
                root : 'rows',
                totalProperty : 'totalCount'
              }, Ext.data.Record.create([{
                    name : 'id',
                    type : 'float'
                  }, {
                    name : 'userId',
                    type : 'float'
                  }, {
                    name : 'version',
                    type : 'float'
                  }, {
                    name : 'netIp',
                    type : 'string'
                  }, {
                    name : 'createTime',
                    type : 'string'
                  }, {
                    name : 'events',
                    type : 'string'
                  }])),
          remoteSort : false
        });
    logGrid = new Ext.grid.GridPanel({
          store : ds,
          region : 'center',
          pageSize : 40,
          bbar : new Ext.PagingToolbar({
                pageSize : 40,
                store : ds,
                displayInfo : true,
                displayMsg : '显示: {0} - {1} 共 {2} 条',
                emptyMsg : "没有数据"
              }),
          loadMask : {
            msg : "正在加载数据..."
          },
          cm : new Ext.grid.ColumnModel([{
                header : 'IP地址',
                dataIndex : 'netIp',
                width : 120
              }, {
                header : '操作日期',
                dataIndex : 'createTime',
                width : 150
              }, {
                header : '操作',
                dataIndex : 'events',
                width : 200
              }])
        });

    logGrid.getStore().on('beforeload', function(store, options) {
          store.baseParams.userId = cUserId;
        }, this, true);

  }

  // 选择某行
  function onRowSelect(selModel, rowIndex, record) {
    var data = record.data;

    canEdit = true;
    status = "list";
    setToolbarStatus();
    cUserId = data.id;

    logGrid.getStore().reload({
          scope : this,
          params : {
            start : 0,
            limit : 40
          }
        });

  }

  // 取出所有数据库的选中状态
  function clearSel() {
  }

  // 创建layout
  function createLayout() {
    toolbar = new Ext.Toolbar({
          items : [{
                xtype : "button",
                cls : "x-btn-icon",
                icon : "resources/img/g_rec_src.png",
                tooltip : "过滤数据",
                id : "tlb_FILTER",
                handler : toggleFilterBar
              }, '-'
              ]
        });

    var viewport = new Ext.Viewport({
          layout : 'border',

          items : [{
                layout : 'fit',
                region : 'north',
                border : false,
                items : [toolbar],
                height : 25
              }, {
                layout : 'border',
                region : 'center',
                border : false,
                items : [{
                      layout : 'fit',
                      region : 'center',
                      border : false,
                      items : [userGrid]
                    }, {
                      layout : 'border',
                      region : 'east',
                      border : false,
                      width : 500,
                      items : [{
                            layout : 'border',
                            region : 'center',
                            border : false,
                            items : [logGrid]
                          }, {
                            layout : 'fit',
                            region : 'south',
                            height : 0,
                            border : false,
                            items : []
                          }]
                    }]
              }]
        });

    viewport.doLayout();
  }

  // 切换过滤查询工具条状态
  function toggleFilterBar() {
    userGrid.toggleFilterBar();
  }

  // 加载数据完成后
  function onLoad(store, records, options) {
    status = "list";
    setToolbarStatus();
  }

  // 设置工具条状态
  function setToolbarStatus() {
//    if (status == "list") {
//      toolbar.items.get("tlb_SAVE").disable();
//      toolbar.items.get("tlb_NEW").enable();
//      if (canEdit) {
//        toolbar.items.get("tlb_RESET").enable();
//        toolbar.items.get("tlb_EDIT").enable();
//        toolbar.items.get("tlb_START").enable();
//        toolbar.items.get("tlb_STOP").enable();
//      } else {
//        toolbar.items.get("tlb_RESET").disable();
//        toolbar.items.get("tlb_EDIT").disable();
//        toolbar.items.get("tlb_START").disable();
//        toolbar.items.get("tlb_STOP").disable();
//      }
//    } else {
//      toolbar.items.get("tlb_SAVE").enable();
//      toolbar.items.get("tlb_NEW").disable();
//      toolbar.items.get("tlb_RESET").disable();
//      toolbar.items.get("tlb_EDIT").disable();
//      toolbar.items.get("tlb_START").disable();
//      toolbar.items.get("tlb_STOP").disable();
//    }
  }

  /* ----------------------- public方法 ----------------------- */
  return {
    /**
     * 初始化
     */
    init : function() {
      createGrid();

      createLayout();
      userGrid.load();
      userGrid.getStore().on("load", onLoad);
    }
  }
}();

Ext.onReady(Divo.app.UserList.init, Divo.app.UserList, true);